Euler Problem 32

We shall say that an n-digit number is pandigital if it makes use of all the digits 1 to n exactly once; for example, the 5-digit number, 15234, is 1 through 5 pandigital.

The product 7254 is unusual, as the identity, 39 × 186 = 7254, containing multiplicand, multiplier, and product is 1 through 9 pandigital.

Find the sum of all products whose multiplicand/multiplier/product identity can be written as a 1 through 9 pandigital.

HINT: Some products can be obtained in more than one way so be sure to only include it once in your sum.


In [1]:
def distinct(s):
    set_s = set(s)
    return len(s) == len(set_s) and not ('0' in set_s)

pandigital = set()
for x in range(2, 1000):
    sx = str(x)
    if distinct(sx):
        for y in range(x+1, 25000):
            sy = str(y)
            sz = str(x*y)
            s = sx + sy + sz
            if len(s) > 9:
                break
            if len(s) == 9 and distinct(s):
                pandigital.add(x*y)

print(sum(pandigital))


45228

In [ ]: